// // 数组转树
// function arrayToTree(items) {
//     const result = [];
//     const itemMap = {};
//     for (const item of items) {
//         const id = item.id;
//         const pid = item.pid;
//         if (itemMap[id]) {
//             itemMap[id] = { ...item, ...itemMap[id] }
//         } else {
//             itemMap[id] = { ...item, children: [] }
//         }

//         const treeItem = itemMap[id];
//         if (pid === 0) {
//             result.push(treeItem)
//         } else {
//             if (!itemMap[pid]) {
//                 itemMap[pid] = { children: [] }
//             }
//             itemMap[pid].children.push(treeItem)
//         }
//         return result
//     }
// }
// https://www.cnblogs.com/mengff/p/13142128.html


function array2Tree(arr){
    if(!Array.isArray(arr) || !arr.length) return;
    let map = {};
    arr.forEach(item => map[item.id] = item); // 将每一个转成一个map 结构

    let roots = [];
    arr.forEach(item => {
        const parent = map[item.parentId];
        if(parent){ // 修改children 的指向
            (parent.children || (parent.children=[])).push(item);
        }
        else{
            roots.push(item); // 没有则说明是顶级节点
        }
    })

    return roots;
}


const arr = [
    {id:1, parentId: null, name: 'a'},
    {id:2, parentId: null, name: 'b'},
    {id:3, parentId: 1, name: 'c'},
    {id:4, parentId: 2, name: 'd'},
    {id:5, parentId: 1, name: 'e'},
    {id:6, parentId: 3, name: 'f'},
    {id:7, parentId: 4, name: 'g'},
    {id:8, parentId: 7, name: 'h'},
]





// function arrayToTree(arr) {
//     const result = [];
//     const itemMap = {};
//     for (const item of items) {
//         const id = item.id;
//         const pid = item.pid;
//         if (itemMap[id]) {
//             itemMap[id] = { ...item, ...itemMap[id] }
//         } else {
//             itemMap[id] = { ...item, children: [] }
//         }

//         const treeItem = itemMap[id];
//         if(pid === 0){
//             result.push()
//         }

//     }

// }
